package com.iflytek.aiuidemo.util;

import org.json.JSONException;
import org.json.JSONObject;
import com.iflytek.aiui.util.log.DebugLog;
import com.iflytek.devboard.control.BoardController;
import android.text.TextUtils;

/**
 * 开发板控制工具类。
 * 
 * @author <a href="http://www.xfyun.cn">讯飞开放平台</a>
 * @date 2016年7月23日 上午10:31:43 
 *
 */
public class DevBoardControlUtil {
	private final static String TAG = "lightcontrol";
	
	public final static String KEY_RC = "rc";
	public final static String KEY_TEXT = "text";
	
	/** led灯的三种颜色 **/
	public final static  int COLOR_RED = BoardController.COLOR_RED;
	public final static  int COLOR_BLUE = BoardController.COLOR_BLUE;
	public final static  int COLOR_GREEN = BoardController.COLOR_GREEN;
	
	// 唤醒角度
	public static int wakeAngle = 0;
	
	/**
	 * 自动休眠灯光控制
	 */
	public static void sleepLight() {
		// 休眠关闭灯
		closeRGBLight();
		closeDirectionLight();
	}
	
	/**
	 * 唤醒灯光控制
	 * @param wakeAngle 唤醒角度
	 */
	public static void wakeUpLight() {
		setDirectionLight(wakeAngle);
	}

	/**
	 * 拒识结果操作灯光
	 * @param json 结果json
	 */
	public static void rejectionLight(JSONObject json) {
		int rc = 0;
		try {
			if (null == json) {
				return;
			}
			rc = json.getInt(KEY_RC);
		} catch (JSONException e1) {
			
			e1.printStackTrace();
		}
		
		if (4 == rc) {
			String text = json.optString(KEY_TEXT);
			if (!TextUtils.isEmpty(text) && !text.matches("^[。？，！]")) {
				
				DebugLog.LogD(TAG, "rc = 4");
				
				new Thread(new Runnable() {
					
					@Override
					public void run() {
						
						for (int i = 1; i <= 12; i++) {
							DevBoardControlUtil.setDirectionLight(wakeAngle + i*30);
							
							try {
								Thread.sleep(20);
							} catch (InterruptedException e) {
								e.printStackTrace();
							}
						}
						DebugLog.LogD(TAG, "set wakeAngle");
						
						DevBoardControlUtil.setDirectionLight(wakeAngle);
					}
				}).start();
			}
		}
	}
	
	/*
	 * 设置灯关闭
	 */
	public static void closeDirectionLight() {
		BoardController.closeDirectionLight();
	}
	
	/**
	 * 设置角度指示灯亮
	 * @param angle 灯亮的角度
	 */
	public static void setDirectionLight(int angle) {
		BoardController.setDirectionLight(angle);
	}
	
	/**
	 * 设置颜色指示灯亮
	 * @param col 亮灯的颜色
	 */
	public static void setRGBLight(int col) {
		BoardController.setRGBLight(col);
	}
	
    /**
     * 关闭颜色灯
     */
	public static void closeRGBLight() {
		BoardController.closeRGBLight();
	}

	public static void setWakeAngle(int angle) {
		wakeAngle = angle;
	}
}
